package com.剑指offer;

/*
 * 将一个字符串转换成一个整数，要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
 * 注意：
 * 因为是int类型，所以int的范围是: -2147483648 ~ 2147483647
 * 如果不在这个范围内也要返回0
 * */
public class _49把字符串转换成整数
{
    public static void main(String[] args)
    {
        System.out.println(StrToInt("-2147483648"));
        long s = 1;
        int sum = 0;
    }

    public static int StrToInt(String str)
    {
        if (str.equals("") || str.length() == 0)
        {
            return 0;
        }
        char[] arr = str.toCharArray();
        long sum = 0;
        int flag = 0;
        if (arr[0] == '-')
        {
            flag = 1;
        }
        for (int i = flag; i < arr.length; i++)
        {
            if (arr[i] == '+')
            {
                continue;
            }
            if (arr[i] < 48 || arr[i] > 57)
            {
                return 0;
            }
            sum = sum * 10 + arr[i] - 48;
        }
        if (flag == 1)
        {
            if ((sum * -1) < -2147483648)
            {
                return 0;
            }
        }
        else
        {
            if (sum > 2147483647)
            {
                return 0;
            }
        }

        return flag == 1 ? (int) sum * (-1) : (int) sum;
    }
}
